import 'package:flutter/material.dart';

/// 编辑器菜单的统一样式定义工具类。
///
/// 该类通过集中管理菜单的样式（如背景色、圆角、阴影、边框等），
/// 方便在全局或主题切换时保持 UI 一致性。
///
/// 使用方式：
/// ```dart
/// MenuBar(
///   style: EditorMenuStyles.menuPopupStyle(context),
///   children: [ ... ],
/// )
/// ```
class EditorMenuStyles {
  /// 私有构造函数，防止被实例化。
  ///
  /// 本类只提供静态方法，不需要对象实例。
  const EditorMenuStyles._();

  /// 返回一个统一定义的 **弹出菜单样式**。
  ///
  /// - [context] 用于获取当前主题的 [ColorScheme]；
  /// - 背景色使用 `cs.surface`；
  /// - 阴影高度为 0（扁平化）；
  /// - 去掉 `surfaceTintColor` 默认的材质效果，保持纯色；
  /// - 边框为圆角矩形，半径 8，颜色使用 `outline` 的弱化透明版；
  /// - 内边距为垂直 6。
  ///
  /// 示例：
  /// ```dart
  /// PopupMenuButton(
  ///   itemBuilder: (context) => [...],
  ///   style: EditorMenuStyles.menuPopupStyle(context),
  /// );
  /// ```
  static MenuStyle menuPopupStyle(BuildContext context) {
    final cs = Theme.of(context).colorScheme;
    return MenuStyle(
      // 背景色：使用当前主题的 surface
      backgroundColor: WidgetStatePropertyAll(cs.surface),

      // 阴影：0，保持扁平化
      elevation: const WidgetStatePropertyAll(0),

      // 移除表面色调叠加，避免系统默认高亮
      surfaceTintColor: const WidgetStatePropertyAll(Colors.transparent),

      // 边框 & 圆角
      shape: WidgetStatePropertyAll(
        RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(8),
          // 注意：为兼容性使用 withOpacity，而不是 Flutter 3.22 新增的 withValues
          side: BorderSide(color: cs.outline.withOpacity(0.12)),
        ),
      ),

      // 内边距：上下留白 6
      padding: const WidgetStatePropertyAll(EdgeInsets.symmetric(vertical: 6)),
    );
  }
}
